[[release-notes-5.11.0-M2]]
== 5.11.0-M2

*Date of Release:* May 17, 2024

*Scope:*

* Repeatable `@..Source` annotations for parameterized tests
* Extensible syntax for specifying discovery selectors
* Console Launcher `--version` option
* Improvements to `NamespacedHierarchicalStore`
* Bug fixes

For a complete list of all _closed_ issues and pull requests for this release, consult the
link:{junit5-repo}+/milestone/74?closed=1+[5.11.0-M2] milestone page in the JUnit
repository on GitHub.


[[release-notes-5.11.0-M2-overall-improvements]]
=== Overall Improvements

[[release-notes-5.11.0-M2-overall-new-features-and-improvements]]
==== New Features and Improvements

* Java classes in published artifacts are now compiled with the `-parameters` option of
  `javac` and thus now contain metadata for reflection on parameters such as their names.


[[release-notes-5.11.0-M2-junit-platform]]
=== JUnit Platform

[[release-notes-5.11.0-M2-junit-platform-bug-fixes]]
==== Bug Fixes

* Attempting to deserialize a `TestIdentifier` no longer causes a `NullPointerException`
  when there is no parent identifier. See
  link:https://github.com/junit-team/junit5/issues/3819[issue 3819] (backported to
  5.10.3).

[[release-notes-5.11.0-M2-junit-platform-new-features-and-improvements]]
==== New Features and Improvements

* All Platform implementations of `DiscoverySelector` now have a parseable string
  representation that can be generated by calling the new
  `DiscoverySelector.toIdentifier()` method and `toString()` on the returned
  `DiscoverySelectorIdentifier`. This string representation can be used to reconstruct
  the original `DiscoverySelector` by calling the new `DiscoverySelectors.parse()` method.
  This change will allow build tools and IDEs to provide generic mechanisms for specifying
  selectors on the command line or in configuration files without having to support each
  selector type individually.
  - The Console Launcher supports specifying selectors via their identifiers using the
    `--select` option. For example, `--select class:foo.Bar` will run all tests in the
    `foo.Bar` class.
  - Similarly, the JUnit Platform Suite engine provides a new `@Select("<identifier>)`
    annotation.
* The Console Launcher now provides a `--version` option.
* `NamespacedHierarchicalStore` now throws an `IllegalStateException` for any attempt to
  modify or query the store after it has been closed. In addition, an attempt to close a
  store that has already been closed will have no effect.
  - See link:https://github.com/junit-team/junit5/issues/3614[issue 3614] for details.


[[release-notes-5.11.0-M2-junit-jupiter]]
=== JUnit Jupiter

[[release-notes-5.11.0-M2-junit-jupiter-bug-fixes]]
==== Bug Fixes

* `MethodOrderer.Random` and `ClassOrderer.Random` now use the same default seed that is
  generated during class initialization (backported to 5.10.3).

[[release-notes-5.11.0-M2-junit-jupiter-new-features-and-improvements]]
==== New Features and Improvements

* `@..Source` annotations for parameterized tests can now be used as repeatable
  annotations. See the
  <<../user-guide/index.adoc#writing-tests-parameterized-repeatable-sources, User Guide>>
  for details.


[[release-notes-5.11.0-M2-junit-vintage]]
=== JUnit Vintage

No changes.
